<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>

  <body>
    <script type="text/javascript">
      //1.JS是什么
      JS是JavaScript的简称,是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言
      //2.JS的数据类型有哪几种，哪些是简单类型变量，哪些是复杂类型变量，它们有什么区别
      分为简单数据类型和复杂数据类型.
      简单数据类型:String字符串/Number/boolean/undefined/null/Symbol
      复杂数据类型:object/Array/function
      //3.用代码来表示具体如何定义JS的各种类型变量
      // var nb = 233;
			// console.log(nb) 
			// var nb2 = Number(123);
			// console.log(nb2) 
      //4.undefined和Null的区别
      1.意义不同：undefined表示变量已经声明，但是没有值；null表示空
      2.数据类型不同：typeof undefined = undefined，但是typeof null=object
      3.转换结果不同：undefined转数值为NaN，null转数值为0px
      //5.script标签写在页面头部和底部，有何区别
      页面头部：具体将引入的JS放在哪里与代码执行的顺序有关。网页文件的读取是从上到下的，如果将JavaScript文件放置在head当中，会先加载JS文件，之后再继续执行，那么此时，如果JS文件比较大，页面加载就会比较慢，导致空白。
      页面底部：如果将JS文件放置在底部的话，可以让JS文件与图片几乎同时下载，使得页面当中的内容能够尽快的下载下来，但是，由于网页基本结构与样式均已经加载完成，那么此时负责交互的JS并没有下载下来，必然也会对用户的体验造成影响。
      //6.如何保证在页面基本结构和样式加载后，再执行我们的JS脚本
      window.onload = function () {
            //方法内容
        }
      //7.如何判断一个变量是属于哪种变量类型（字符串、数值、布尔值、Null、undefined、对象、数组、函数）
      1.typeof 用于判断简单数据类型
        console.log(typeof str);//string
        console.log(typeof num);//number
        console.log(typeof bl);//boolean
        console.log(typeof nu);//object
        console.log(typeof ud);//undefined
        console.log(typeof arr);//object//从这里可以看出数组和对象返回值都一样，不利于判断数值类型
        console.log(typeof obj);//object
        console.log(typeof fn);//function
      2.instanceof用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上。
        console.log(arr instanceof Array);//true
        console.log(obj instanceof Object);//true
        console.log(fn instanceof Function);//true
        console.log(str instanceof String);//false,虽然是字符串类型，
      3.使用对象的原型去判断数据类型，Object.prototype.toString.call(判断的值)
        console.log(Object.prototype.toString.call(arr));
        console.log(Object.prototype.toString.call(obj));
        console.log(Object.prototype.toString.call(fn));
        console.log(Object.prototype.toString.call(str));
        console.log(Object.prototype.toString.call(str).slice(8,-1));
      //8.JS的注释写法有哪几种，有何区别
      1.单行注释以 // 开头。任何位于 // 与行末之间的文本都会被 JavaScript 忽略（不会执行）。
      2.多行注释以 /* 开头，以 */ 结尾。任何位于 /* 和 */ 之间的文本都会被 JavaScript 忽略。
      
      //9.javascript引入页面有几种形式
      行内导入,内嵌式,外联式
      //10.var 的意义何在
      用关键保留字var 进行变量的声明 就是告诉解析器，我要创建一个箱子出来装东西
      //11.已知数A与B，由键盘输入AB的值，交换它们的值，并输出。
      //提示，获取用户输入信息，可以使用 var user_input = prompt("请输入数字");
      var A = prompt("请输入数字A:");
			var B = prompt("请输入数字B:");
			var C = A
      A = B;
      B = C;

      //结构赋值
			[A,B]=[B,A]
			
			console.log("A的值是:"+A + "\n" +"B的值是:"+B)


    </script>
  </body>
</html>

